#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>

/*
 * 取得本地目前的时间秒数
 */

/*

	返回的结果是一个time_t类型，其实就是一个大整数，其值表示从CUT（Coordinated Universal Time）
	
	时间1970年1月1日00:00:00（称为UNIX系统的Epoch时间）到当前时刻的秒数。然后调用localtime将time_t
	
	所表示的CUT时间转换为本地时间（我们是+8区，比CUT多8个小时）并转成struct tm类型，该类型的各数据成员分别表示年月日时分秒。


　　补充说明：time函数的原型也可以理解为 long time(long *tloc)，即返回一个long型整数。



	1秒＝1000毫秒，

	1毫秒＝1000微秒，

	1微妙＝1000纳秒，

	1纳秒＝1000皮秒。

	秒用s表现,毫秒用ms,微秒用μs表示，纳秒用ns表示，皮秒用ps表示。



	ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。

	使用 gmtime() 和 localtime() 可将 time_t 时间类型转换为 struct tm 结构体；

	使用 mktime() 将 struct tm 结构体转换为 time_t 时间类型；

	使用 asctime() 将 struct tm 转换为 字符串 形式。


	sleep(1);		停留1秒 
	usleep(1000);	停留1毫秒 

*/

void time1()
{
  long int seconds;

  seconds = time((time_t *) NULL);
  printf("%d\n", seconds);
}

/*
 * time函数也常用于随机数的生成，用日历时间作为种子
 */
void rand_num()
{
  int i;

  srand((unsigned) time(NULL));
  printf("ten random numbers from 0 to 99.\n\n");

  for (i = 0; i < 10; i++)
    printf("%d\n", rand() % 100);
}

/*
 * 用time()函数结合其他函数（如：localtime、gmtime、asctime、ctime）可以获得当前系统时间或是标准时间
 */
void get_current_time()
{
  time_t timer;
  struct tm * tblock;
  
  timer = time(NULL);
  tblock = localtime(&timer);
  printf("Local time is : %s\n", asctime(tblock));
}

void main()
{
  time1();
  rand_num();
  get_current_time();
}
